1
Transición a producción: La mentalidad de despliegue
EvoClass-AI002Lecture 10
00:00

Transición a producción: La mentalidad de despliegue

Este módulo final pone el puente entre la investigación exitosa —donde alcanzamos una alta precisión en un cuaderno— y una ejecución confiable. El despliegue es el proceso clave que transforma un modelo de PyTorch en un servicio mínimo y autónomo, capaz de entregar predicciones de forma eficiente a los usuarios finales con baja latencia y servicio autónomo capaz de servir predicciones de forma eficiente a los usuarios finales con baja latencia y alta disponibilidad.

1. El cambio de mentalidad para producción

El entorno exploratorio de un cuaderno de Jupyter es estado y frágil para uso en producción. Debemos reestructurar nuestro código desde scripts exploratorios hasta componentes estructurados y modulares adecuados para solicitudes concurrentes, optimización de recursos y una integración sin problemas en sistemas más grandes.

Inferencia de baja latencia: Alcanzar tiempos de predicción consistentemente por debajo de los umbrales objetivo (por ejemplo, $50\text{ms}$), fundamental para aplicaciones en tiempo real.
Alta disponibilidad: Diseñar el servicio para que sea confiable, sin estado y capaz de recuperarse rápidamente tras un fallo.
Reproducibilidad: Garantizar que el modelo desplegado y su entorno (dependencias, pesos, configuración) coincidan exactamente con los resultados de investigación validados.
Enfoque: El servicio del modelo
En lugar de desplegar todo el script de entrenamiento, desplegamos un pequeño envoltorio de servicio autónomo. Este servicio debe realizar únicamente tres tareas: cargar el artefacto del modelo optimizado, aplicar el preprocesamiento de entrada y ejecutar el paso hacia adelante para devolver la predicción.
inference_service.py
TERMINALbash — uvicorn-service
> Ready. Click "Simulate Deployment Flow" to run.
>
ARTIFACT INSPECTOR Live

Simulate flow to view loaded production artifacts.
Question 1
Which feature of a Jupyter notebook makes it unsuitable for production deployment?
It primarily uses Python code
It is inherently stateful and resource-intensive
It cannot directly access the GPU
Question 2
What is the primary purpose of converting a PyTorch model to TorchScript or ONNX before deployment?
Optimization for faster C++ execution and reduced Python dependency
To prevent model theft or reverse engineering
To automatically handle input data preprocessing
Question 3
When designing a production API, when should the model weights be loaded?
Once, when the service initializes
At the start of every prediction request
When the first request to the service is received
Challenge: Defining the Minimal Service
Plan the structural requirements for a low-latency service.
You need to deploy a complex image classification model ($1\text{GB}$) that requires specialized image preprocessing. It must handle $50$ requests per second.
Step 1
To ensure high throughput and low average latency, what is the single most critical structural change needed for the Python script?
Solution:
Refactor the codebase into isolated modules (Preprocessing, Model Definition, Inference Runner) and ensure the entire process is packaged for containerization.
Step 2
What is the minimum necessary "artifact" to ship, besides the trained weights?
Solution:
The exact code/class definition used for preprocessing and the model architecture definition, serialized and coupled with the weights.